端口扫描的类型有哪些
端口扫描的目的是找出目标系统上提供的服务列表。端口扫描程序挨个尝试与 TCP/UDP端口连接,然后根据端口与服务的对应关系,结合服务器端的反应推断目标系统上是否运行了某项服务,攻击者通过这些服务可能获得关千目标系统的进一步的知识或通往目标系统的途径。根据端口扫描利用的技术,扫描可以分成多种类型,分别为:
完全连接扫描
完全连接扫描利用 TCP/IP 协议的三次握手连接机制,使源主机和目的主机的某个端口建立一次完整的连接。如果建立成功,则表明该端口开放。否则,表明该端口关闭。
半连接扫描
半连接扫描是指在源主机和目的主机的三次握手连接过程中,只完成前两次握手,不建立一次完整的连接。
SYN 扫描
首先向目标主机发送连接请求,当目标主机返回响应后,立即切断连接过程,并查看响应情况。如果目标主机返回 ACK 信息,表示目标主机的该端口开放。如果目标主机返回 RESET 信息,表示该端口没有开放。
ID 头信息扫描
这种扫描方法需要用一台第三方机器配合扫描,并且这台机器的网络通信量要非常少,即 dumb 主机。首先由源主机 dumb 主机 发出连续的 PING 数据包,并且查看主机 返回的数据包 ID 头信息。一般而言,每个顺序数据包的 ID 头的值会增加 。然后由源主机 假冒主机 B 的地址向目的主机 C 的任意端口 (1 ~65535) 发送 SYN 数据包。这时,主机 C 向主机 B 发送的数据包有两种可能的结果:
• SYNIACK 表示该端口处千监听状态。
• RSTIACK 表示该端口处千非监听状态。
那么,由后续 PING 数据包的响应信息的 ID 头信息可以看出,如果主机 C 的某个端口是开放的,则主机 B 返回 C 的数据包中, ID 头的值不是递增 1, 而是大于1。如果主机 C 的某个端口是非开放的,则主机 B 返回 A 的数据包中, ID 头的值递增 1, 非常规律。
隐蔽扫描
隐蔽扫描是指能够成功地绕过 IDS 、防火墙和监视系统等安全机制,取得目标主机端口信息的一种扫描方式。
SYNIACK 扫描
由源主机向目标主机的某个端口直接发送 SYNIACK 数据包,而不是先发送 SYN 数据包。由千这种方法不发送 SYN 数据包,目标主机会认为这是一次错误的连接,从而会报错。如果目标主机的该端口没有开放,则会返回 RST 信息。如果目标主机的该端口处于开放状态 (LISTENING) ,则不会返回任何信息,而是直接将这个数据包抛弃掉。
FIN 扫描
源主机 A 向目标主机 B 发送 FIN 数据包,然后查看反馈信息。如果端口返回 RESET 信息,则说明该端口关闭。如果端口没有返回任何信息,则说明该端口开放。
ACK 扫描
首先由主机 A 向目标主机 B 发送 FIN 数据包,然后查看反馈数据包的 TTL 值和 WIN 值。开放端口所返回的数据包的 TTL 值一般小于 64, 而关闭端口的返回值一般大于 64 。开放端口所返回的数据包的 WIN 般大千 0, 而关闭端口的返回值一般等于0。
NULL 扫描
将源主机发送的数据包中的 ACK FIN RST SYN URG PSH 等标志位全部置空。如果目标主机没有返回任何信息,则表明该端口是开放的。如果返回 RST 信息,则表明该端口是关闭的。
XMAS 扫描
XMAS 扫描的原理和 NULL 扫描相同,只是将要发送的数据包中的 ACK、FIN、RST、SYN、URG、PSH 等头标志位全部置空 。如果目标主机没有返回任何信息,则表明该端口是开放的。如果返回 RST 信息,则表明该端口是关闭的。
网络端口扫描是攻击者必备的技术,通过扫描可以掌握攻击目标的开放服务,根据扫描所获得的信息,为下一步的攻击做准备。